package appcontroltareas;

import java.util.ArrayList;

public class AdmUsuarios {

    private ArrayList<Usuario> usuarios;

    public AdmUsuarios(){
        usuarios = new ArrayList<Usuario>();
    }
    
    public void cargarUsuarios(ArrayList<Usuario> usuarios){
    	this.usuarios = usuarios;
    }

    public void registrarUsuario(String dni, String nombre, String apellidoPaterno, String apellidoMaterno,
    		String correo, String fechaIngreso, String cargo, Rol rol, String usuario, String clave) {
    	
        if (noExisteDni(dni)) {
            Usuario nuevoUsuario = new Usuario(dni, nombre, apellidoPaterno, apellidoMaterno, correo, fechaIngreso, cargo, rol, usuario, clave);
            usuarios.add(nuevoUsuario);
        }
    }
    
    public void editarUsuario(String dni, String nombre, String apellidoPaterno, String apellidoMaterno,
    		String correo, String fechaIngreso, String cargo, Rol rol, String usuario, String clave) {
    	
    	Usuario usuarioBuscado = buscarUsuario(dni);
    	if(usuarioBuscado != null){
    		usuarioBuscado.editarUsuario(nombre, apellidoPaterno, apellidoMaterno, correo, fechaIngreso, cargo, rol, usuario, clave);
    	}
    }    

    public Usuario buscarUsuario(String dni) {
        for( Usuario usuario  : usuarios)
            if (usuario.getDni().equals(dni))
                return usuario;
        return null;
    }

    public int getTotalUsuarios() {
        return usuarios.size();
    }

    private boolean noExisteDni(String dni) {
        return buscarUsuario(dni) == null;
    }

    public void eliminarUsuario(String dni) {
        Usuario usuario = buscarUsuario(dni);
        if (usuario != null)
        	if(!validarUsuario(dni))
        		usuarios.remove(usuario);
    }
    
    public boolean validarUsuario(String dni){
    	BaseDatos baseDatos = new BaseDatos();    	
    	
    	ArrayList<Tarea> tareas = baseDatos.getTareas();
    	for( Tarea tarea  : tareas)
    		if( (tarea.getResponsable().getDni().equals(dni)
    				|| tarea.buscarUsuarioNotificacion(DeclaracionJurada.MODULO, dni) != null)
    				&& tarea.getEstado() != Tarea.ESTADO_DESCARTADO)
    			return true;
    	
    	return false;    		
    }
    

}
